package com.zhouyong.leetcode.各位相加258;

/**
 * @Author 99
 * @Date 2022/9/29 11:19
 * @Version 1.0
 */
public class Test {

    // 给定一个非负整数 num，反复将各个位上的数字相加，直到结果为一位数。返回这个结果
    // 输入: num = 38
    // 输出: 2
    // 解释: 各位相加的过程为：
    // 38 --> 3 + 8 --> 11
    // 11 --> 1 + 1 --> 2
    // 由于 2 是一位数，所以返回 2。
    public static void main(String[] args) {

        System.out.println(addDigits(0));
    }

    public static int addDigits(int num) {

        // 执行用时：0 ms, 在所有 Java 提交中击败了100.00%的用户
        // 内存消耗：38.7 MB, 在所有 Java 提交中击败了62.12%的用户
        int index = 0, result = 0;
        while (num >= 10) {
            while (num > 0) {
                // 求出每位数
                index = num % 10;
                num /= 10;
                result += index;
            }
            num = result;
            result = 0;
        }
        return num;

        // 使用数学公式推理得出：
        // return (num - 1) % 9 + 1;
    }
}
